import { login } from '@/api/user'
import { getToken, setToken, removeToken } from '@/utils/storage'

export default {
  namespaced: true,
  state: () => ({
    token: getToken() || '', // 确保初始值为空字符串
    userInfo: {} // 新增用户信息存储
  }),
  mutations: {
    // 保存token
    setToken (state, token) {
      state.token = token
      setToken(token)
    },
    // 清除token
    clearToken (state) {
      state.token = ''
      state.userInfo = {}
      removeToken()
    },
    // 设置用户信息
    setUserInfo (state, userInfo) {
      state.userInfo = userInfo
    },
    // 清除用户信息（保留token）
    clearUserInfo (state) {
      state.userInfo = {}
    }
  },
  actions: {
    async loginActions ({ commit }, loginForm) {
      try {
        const res = await login(loginForm)
        // 保存token到store和本地存储
        commit('setToken', res.data.token)
        return { success: true, data: res }
      } catch (error) {
        // 返回失败状态
        return { success: false, error }
      }
    },
    // 新增：退出登录action
    async logoutActions ({ commit }) {
      try {
        // 先清除本地token，再调用API（避免API失败导致无法退出）
        commit('clearToken')
        return { success: true }
      } catch (error) {
        // 即使API调用失败，也强制清除本地token
        commit('clearToken')
        return { success: true } // 强制返回成功，确保用户能退出
      }
    }
  }
}
